//malloc 
//operator new  -> malloc + 失败抛异常
//new           -> operator new + 构造函数
//new 比起 malloc不一样的地方：1.申请空间失败抛异常
//                           2.调用构造函数

//new要完成两个工作：一个是开空间 一个是调用构造函数
//开空间 -> 要申请空间同时要保证申请空间失败抛异常 -> operator new


//delete比起free不一样的地方：1.调用析构函数，完成对象的清理工作
//operator delete 和 free无区别：因为释放空间失败直接终止进程。是因为要和operator new成对出现才产生

//产生operator new的原因：完成new申请空间失败时会抛异常的需求
//又因为delete 释放空间失败直接就结束进程，不会有返回值。


//malloc 申请空间失败返回null，new申请空间失败抛异常
